package com.infocollect.project.grant.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.infocollect.project.grant.domain.GrExaminerSceneNew;
import com.infocollect.project.grant.domain.SceneListForPointExcel;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.infocollect.project.grant.mapper.GrExaminerSceneMapper;
import com.infocollect.project.grant.domain.GrExaminerScene;
import com.infocollect.project.grant.service.IGrExaminerSceneService;

/**
 * 人员签到Service业务层处理
 *
 * @author infocollect
 * @date 2022-05-14
 */
@Service
public class GrExaminerSceneServiceImpl implements IGrExaminerSceneService
{
    @Autowired
    private GrExaminerSceneMapper grExaminerSceneMapper;

    /**
     * 查询人员签到
     *
     * @param id 人员签到ID
     * @return 人员签到
     */
    @Override
    public GrExaminerScene selectGrExaminerSceneById(Long id)
    {
        return grExaminerSceneMapper.selectGrExaminerSceneById(id);
    }

    /**
     * 查询人员签到列表
     *
     * @param grExaminerScene 人员签到
     * @return 人员签到
     */
    @Override
    public List<GrExaminerSceneNew> selectGrExaminerSceneList(GrExaminerSceneNew grExaminerScene)
    {
        return grExaminerSceneMapper.selectSignedToListNew(grExaminerScene);
    }
    @Override
    public GrExaminerSceneNew selectSignedNewForId(Long id){
        return grExaminerSceneMapper.selectSignedNewForId(id);
    }

    /**
     * 新增人员签到
     *
     * @param grExaminerScene 人员签到
     * @return 结果
     */
    @Override
    public int insertGrExaminerScene(GrExaminerScene grExaminerScene)
    {
        return grExaminerSceneMapper.insertGrExaminerScene(grExaminerScene);
    }

    /**
     * 修改人员签到
     *
     * @param grExaminerScene 人员签到
     * @return 结果
     */
    @Override
    public int updateGrExaminerScene(GrExaminerScene grExaminerScene)
    {
        return grExaminerSceneMapper.updateGrExaminerScene(grExaminerScene);
    }

    /**
     * 批量删除人员签到
     *
     * @param ids 需要删除的人员签到ID
     * @return 结果
     */
    @Override
    public int deleteGrExaminerSceneByIds(Long[] ids)
    {
        return grExaminerSceneMapper.deleteGrExaminerSceneByIds(ids);
    }

    /**
     * 删除人员签到信息
     *
     * @param id 人员签到ID
     * @return 结果
     */
    @Override
    public int deleteGrExaminerSceneById(Long id)
    {
        return grExaminerSceneMapper.deleteGrExaminerSceneById(id);
    }
    @Override
    public List<SceneListForPointExcel> sceneListForPointExcelUpload(List<SceneListForPointExcel> xsbBeanList, Long grantId, String sceneId,Long examinerPointId)
    {
        List<SceneListForPointExcel> list = new ArrayList<>();

        //查询该考官是否在该考点内(grantId departid idcard pointId)
        for (SceneListForPointExcel sceneListForPointExcel : xsbBeanList) {
            String message = "";


            Long examinerId = grExaminerSceneMapper.queryByFourId(grantId,sceneListForPointExcel.getIdcard(),examinerPointId);
            if (examinerId==null){
                message = message + "当前人员不在本考点的清单里面";
                sceneListForPointExcel.setMessage(message);
                list.add(sceneListForPointExcel);
            }else{
                //根据项目、考点、场次、考官编号查询
                GrExaminerScene grExaminerScene = grExaminerSceneMapper.queryByThreeId(grantId,examinerPointId,Long.valueOf(sceneId), examinerId);
                if (grExaminerScene == null){
                    //做新增
                    GrExaminerScene grExaminerScene1 = new GrExaminerScene();
                    grExaminerScene1.setGrantId(grantId);
                    grExaminerScene1.setExaminerId(examinerId);
                    grExaminerScene1.setSceneId(Long.valueOf(sceneId));
                    grExaminerScene1.setExampointId(examinerPointId);
                    grExaminerScene1.setSceneStatus(0);
                    grExaminerScene1.setExamRoom(sceneListForPointExcel.getExampointName());
                    grExaminerScene1.setRoomAddr(sceneListForPointExcel.getExampointAddr());
                    grExaminerScene1.setRemark(sceneListForPointExcel.getRemark());
                    grExaminerScene1.setSignRemark(sceneListForPointExcel.getSignRemark());
                    int insert = grExaminerSceneMapper.insertGrExaminerScene(grExaminerScene1);
                }else{
                    //做修改
                    grExaminerScene.setSceneId(Long.valueOf(sceneId));
                    grExaminerScene.setExamRoom(sceneListForPointExcel.getExampointName());
                    grExaminerScene.setRoomAddr(sceneListForPointExcel.getExampointAddr());
                    if (StringUtils.isNotEmpty(sceneListForPointExcel.getRemark())){
                        grExaminerScene.setRemark(sceneListForPointExcel.getRemark());
                    }
                    if (StringUtils.isNotEmpty(sceneListForPointExcel.getSignRemark())){
                        grExaminerScene.setSignRemark(sceneListForPointExcel.getSignRemark());
                    }
                    int i = grExaminerSceneMapper.updateGrExaminerScene(grExaminerScene);
                }

            }
        }

        return list;
    }
    @Override
    public Integer updateExaminerSceneStatus(GrExaminerScene grExaminerScene)
    {
        GrExaminerScene grExaminerScene1 = grExaminerSceneMapper.selectGrExaminerSceneById(grExaminerScene.getId());
        grExaminerScene1.setSceneStatus(grExaminerScene.getSceneStatus());
        grExaminerScene1.setSignDay(grExaminerScene.getSignDay());
        grExaminerScene1.setDayPrice(grExaminerScene.getDayPrice());
        grExaminerScene1.setTaxPrice(grExaminerScene.getTaxPrice());
        grExaminerScene1.setSumPrice(grExaminerScene.getSumPrice());
        grExaminerScene1.setExaminerType(grExaminerScene.getExaminerType());
        int i = grExaminerSceneMapper.updateGrExaminerScene(grExaminerScene1);
        return i;
    }
}
